<?php

require_once 'classes/Adresse.php';
require_once 'classes/Personne.php';
require_once 'classes/PersonneToRole.php';
require_once 'SC/SCadresse.php';
require_once 'SC/SCpersonne.php';
require_once 'SC/SCpersonnetorole.php';
require_once 'SC/SChabitation.php';
require_once 'SC/SClocalite.php';
require_once 'config.php';
/**
 * Classe permettant de gérer les informations relatives aux adresses des personnes
 */
class SFadresse {

    /**
     * Methode permettant d'exporter les personnes de facon distinctes et leurs adresses selon les roles
     * @param Role $role 
     */
     public function exporterCSVAdressesSelonRole($role){
       
       
            $SChabite = new SChabitation();
            $SCadress = new SCadresse();
            $SClocalite = new SClocalite;
            $Scpersonnetorole = new SCpersonnetorole();
            $SCpersonne = new SCpersonne();
            
            $adressesCompletes = null;
            
            $personnesToRole = $Scpersonnetorole->lister(new PersonneToRole($role, null));
            
            if($personnesToRole!=null){
                foreach ($personnesToRole as $value) {

                    $personnes[]=$SCpersonne->lister(new Personne($value->getPersonne_id(), null, null, null, null, null, null, null, null, null));
                }
            }
            if($personnes[0]!=null){
                foreach ($personnes as $personne) {
                    $habitation = $SChabite->lister(new Habitation(null, null, $personne[0]->getId(), null));
                    $adresse = null;
                    $localite = null;
                    if($habitation!=null)
                        $adresse = $SCadress->lister(new Adresse($habitation[0]->getAdresse_ligne1(), null, null, null, $habitation[0]->getLocalite_npa()));           
                    if($adresse!=null && $habitation!=null)
                        $localite = $SClocalite->lister(new Localite($habitation[0]->getLocalite_npa(), null, null, null));
                    
                    if($habitation!=null && $adresse!=null && $localite!=null){
                            $adresseComplete = array(   "role" => $role,
                                                        "titre" => $personne[0]->getTitre(), 
                                                        "prenom" => $personne[0]->getPrenom(),
                                                        "nom" => $personne[0]->getNom(),
                                                        "adresse" => $habitation[0]->getAdresse_ligne1(),
                                                        "ligne2" => $adresse[0]->getLigne2(),
                                                        "ligne3" =>$adresse[0]->getLigne3(),
                                                        "npa" => $localite[0]->getNpa(),
                                                        "localite" => $localite[0]->getNom(),
                                                        "pays" => $localite[0]->getPays_nom()
                                );

                            $adressesCompletes[]=$adresseComplete;

                        }
                
                }
            
            }
            
            if($adressesCompletes[0]!=null){
           // la variable qui va contenir les données CSV
            $outputCsv = $this->arrayToCSV($adressesCompletes);

           // Nom du fichier final
            $role = "_".$role;
           $fileName = 'export_adresses'.$role.'.csv';
           
           header("Content-disposition: attachment; filename=".$fileName);
           header("Content-Type: application/force-download");
           header("Content-Transfer-Encoding: application/vnd.ms-excel\n");
           header("Pragma: no-cache");
           header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public");
           header("Expires: 0");
           
           echo $outputCsv;
           die();
           
       }
       return true;
     }
       
       /**
        * Methode permettant de créer un fichier CSV et de le remplir avec un array
        * @param type $array
        * @return string 
        */
       private function arrayToCSV($array){
         $write = "Role;Titre;Prenom;Nom;Adresse;Ligne2;Ligne3;NPA;Localite;Pays\r\n";
          foreach($array as $personne) {

              $tmp = '';
              
                foreach($personne as $value) {

                    $tmp .= $value . ';';
                }

                $write .= $tmp . "\r\n";
            }

            return $write;
       }

}



//
//   POUR DE MULTIPLES RÔLES
//
/**
     * Methode permettant d'exporter les personnes de facon distinctes et leurs adresses selon les roles
     * @param Role $role 
     
     public function exporterCSVAdressesSelonRole($roles){
       
       
            $SChabite = new SChabitation();
            $SCadress = new SCadresse();
            $SClocalite = new SClocalite;
            $Scpersonnetorole = new SCpersonnetorole();
            $SCpersonne = new SCpersonne();
            
            $adressesCompletes = null;
            
     foreach ($roles as $role) {
               
         
                    $personnesToRole = $Scpersonnetorole->listerDisctinct(new PersonneToRole($role, null));

                    if($personnesToRole!=null){
                        foreach ($personnesToRole as $value) {

                            $personnes[]=$SCpersonne->lister(new Personne($value->getPersonne_id(), null, null, null, null, null, null, null, null, null));
                            
                        }
                    }
                    if($personnes!=null){
                        foreach ($personnes as $personne) {
                            
                            $habitation = $SChabite->lister(new Habitation(null, null, $personne[0]->getId(), "Principale"));
                            $adresse = null;
                            $localite = null;
                            if($habitation!=null)
                                $adresse = $SCadress->lister(new Adresse($habitation[0]->getAdresse_ligne1(), null, null, null, $habitation[0]->getLocalite_npa()));           
                            if($adresse!=null && $habitation!=null)
                                $localite = $SClocalite->lister(new Localite($habitation[0]->getLocalite_npa(), null, null, null));

                            if($habitation!=null && $adresse!=null && $localite!=null){
                                    $adresseComplete = array(   "role" => $role,
                                                                "titre" => $personne[0]->getTitre(), 
                                                                "prenom" => $personne[0]->getPrenom(),
                                                                "nom" => $personne[0]->getNom(),
                                                                "adresse" => $habitation[0]->getAdresse_ligne1(),
                                                                "ligne2" => $adresse[0]->getLigne2(),
                                                                "ligne3" =>$adresse[0]->getLigne3(),
                                                                "npa" => $localite[0]->getNpa(),
                                                                "localite" => $localite[0]->getNom(),
                                                                "pays" => $localite[0]->getPays_nom()
                                        );

                                    $adressesCompletes[]=$adresseComplete;

                                }

                        }

                    }
     
                    $adressesCompletess[]=$adressesCompletes;
     }
           
           // la variable qui va contenir les données CSV
            
                $outputCsv = $this->arrayToCSV($adressesCompletess);
         if($adressesCompletess[0]!=null){
            // Nom du fichier final
           $fileName = 'export_adresses.csv';
           
           header("Content-disposition: attachment; filename=".$fileName);
           header("Content-Type: application/force-download");
           header("Content-Transfer-Encoding: application/vnd.ms-excel\n");
           header("Pragma: no-cache");
           header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public");
           header("Expires: 0");
           
           echo $outputCsv;
            }
       }
       
       /**
        * Methode permettant de créer un fichier CSV et de le remplir avec un array
        * @param type $array
        * @return string 
       
       private function arrayToCSV($array){
           
         $write = "Role;Titre;Prenom;Nom;Adresse;Ligne2;Ligne3;NPA;Localite;Pays\r\n";
            
var_dump($array);
         foreach ($array as $personnes) {
             
         
                  foreach($personnes as $personne) {

                    $tmp = '';

                        foreach($personne as $value) {

                            $tmp .= $value . ';';
                        }

                        $write .= $tmp . "\r\n";
                    }

            }
            return $write;
       }
*/



?>
